博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
商品加入购物车表结构设计
阅读量:6363 次
发布时间:2019-06-23

本文共 3906 字,大约阅读时间需要 13 分钟。

如图所示:

Product(绿色框)是每件商品的信息,对应数据库中的product每一项,不是重点

CartItem(红色框)是每一个购物项,也就是你点击加入购物车的所有信息,包括Product,还有购买数量,和购买这个商品的总价格 重点

Cart(蓝色框)是购物车,也是你本次购买所有商品的总的信息,包括CartItem,和所有购物项的总金额 重点

CartItem实体类:

public class CartItem {
//购物项 private Product product;//这个购物项中的商品信息 private int buyNum;//购买数量 private double subtotal;//总价格 public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public int getBuyNum() { return buyNum; } public void setBuyNum(int buyNum) { this.buyNum = buyNum; } public double getSubtotal() { return subtotal; } public void setSubtotal(double subtotal) { this.subtotal = subtotal; } }

Cart实体类:

import java.util.HashMap;import java.util.Map;public class Cart {
//购物车 //该购物车中存储的n个购物项 用Map集合是为了之后业务操作 //Map中的key是String类型,存放的是购物项中商品的pid(主键)为了之后多次加入该商品方便累加 private Map
cartItems = new HashMap
(); //n个购物项的总计 private double total; public Map
getCartItems() { return cartItems; } public void setCartItems(Map
cartItems) { this.cartItems = cartItems; } public double getTotal() { return total; } public void setTotal(double total) { this.total = total; }}

商品信息页面:

${product.pname}
编号:${product.pid}
亿家价:
¥:${product.shop_price}元/份 参 考 价:
¥${product.market_price}元/份
促销:
限时抢购
白色
购买数量:
 收藏商品

点击加入购物车的逻辑:

public void addProductToCart(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        HttpSession session = request.getSession();    ProductService service = new ProductService();    //获得要放到购物车的商品的pid    String pid = request.getParameter("pid");    //获得该商品的购买数量    int buyNum = Integer.parseInt(request.getParameter("buyNum"));    //获得product对象    Product product = service.findProductByPid(pid);    //计算小计    double subtotal = product.getShop_price()*buyNum;    //封装CartItem    CartItem item = new CartItem();    item.setProduct(product);    item.setBuyNum(buyNum);    item.setSubtotal(subtotal);    //获得购物车---判断是否在session中已经存在购物车    Cart cart = (Cart) session.getAttribute("cart");    if(cart==null){        cart = new Cart();    }    //将购物项放到车中---key是pid    //先判断购物车中是否已将包含此购物项了 ----- 判断key是否已经存在    //如果购物车中已经存在该商品----将现在买的数量与原有的数量进行相加操作    Map
cartItems = cart.getCartItems(); double newsubtotal = 0.0; if(cartItems.containsKey(pid)){ //取出原有商品的数量 CartItem cartItem = cartItems.get(pid); int oldBuyNum = cartItem.getBuyNum(); oldBuyNum+=buyNum; cartItem.setBuyNum(oldBuyNum); cart.setCartItems(cartItems); //修改小计 //原来该商品的小计 double oldsubtotal = cartItem.getSubtotal(); //新买的商品的小计 newsubtotal = buyNum*product.getShop_price(); cartItem.setSubtotal(oldsubtotal+newsubtotal); }else{ //如果车中没有该商品 cart.getCartItems().put(product.getPid(), item); newsubtotal = buyNum*product.getShop_price(); } //计算总计 double total = cart.getTotal()+newsubtotal; cart.setTotal(total); //将车再次访问session session.setAttribute("cart", cart); //直接跳转到购物车页面 response.sendRedirect(request.getContextPath()+"/cart.jsp");}

 

转载于:https://www.cnblogs.com/ms-grf/p/7209643.html

你可能感兴趣的文章
数据结构(C语言版)第三章:栈和队列
查看>>
Stopping and/or Restarting an embedded Jetty in...
查看>>
Oracle存储过程中的数据集输入参数
查看>>
vsftp 配置
查看>>
VCSA中配置时间和时区,实测至6.5适用
查看>>
高并发IM系统架构优化实践
查看>>
产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
查看>>
有关linux--进程组、会话、守护进程详解
查看>>
我的友情链接
查看>>
monkeyrunner运行Python脚本来检查apk渠道和验证是否可以调用微信
查看>>
github获得SSH Key解决Permission denied (publickey)问题
查看>>
用java代码编写Oracle存储过程
查看>>
APACHE转发
查看>>
android-market-api
查看>>
解決 yum update錯誤:[Errno -1] Metadata file does not match checksum
查看>>
ASP.NET(C#)Excel导入Dataset的出现数据值丢失问题
查看>>
我的友情链接
查看>>
『Data Science』R语言学习笔记,获取数据
查看>>
rails中n秒页面自动跳转
查看>>
我的友情链接
查看>>